package `02-lambada`

/**
 * 三数相加/三数相乘
 * 函数的函数
 * 具体对三个数进行的操作，在fun01调用的时候传入的lambda函数决定
 */
fun fun01(num1:Int,num2:Int,num3:Int,lambda:(Int,Int,Int)->Int):Int{
    //调用lambda函数 两种方式
//    return lambda(num1,num2,num3)
    return lambda.invoke(num1,num2,num3)
}

fun main() {
    //当函数的参数中只有一个函数时，可以把函数的实现跟在()后面
    println(
        fun01(1, 2, 3) { num1, num2, num3 -> Int
            num1 + num2 + num3
        }
    )

    println(
        fun01(1, 2, 3,
            { num1, num2, num3 -> Int
                num1 + num2 + num3
            })
    )
    println("上述两种调用方式等同，更推荐第一种")

}